//默认绑定
// function foo(){
//     //"use strict" //严格模式下不能默认绑定
//     console.log(this.a);
// }
// var a = 2
// foo() //window环境 2



//隐式绑定
// function foo(){
//     console.log(this.a);
// }
// var obj = {
//  a: 2,
//  foo: foo
// }

// obj.foo() 



// function foo(){
//     console.log(this.a);
// }

// var obj2 = {
//     a: 4,
//     foo: foo
//    }

// var obj1 = {
//  a: 2,
//  obj2: obj2
// }



// obj1.obj2.foo() 



// 隐式绑定丢失
// function foo(){
//     console.log(this.a);
// }

// var obj = {
//  a: 2,
// foo: foo
// } 
// var bar = obj.foo()  //先打印2 再报错

// var a = 'glob'
// bar()


//显示绑定
function foo(){
    console.log(this.a);
}
var obj = {
    a: 2
}
foo.call(obj)